package jd;

import java.util.Scanner;

/**
 * 
 小东是编号为1的候选者，此外还有其他的候选者参加选举。根据初步的调查情况，所有准备投票的小朋友都有一定的投票倾向性，小东
 如果要获得胜利，必须争取部分准备为其他候选人投票的小朋友。由于小东的资源较为有限，她希望用最小的代价赢得胜利， 
 请你帮忙计算她最少需要争取的选票数。
 * 输入
 * 
 * 输入有若干组，每组包含两行，第一行为一个正整数n（2<=n<=100），表示候选者的数量，第二行为每个候选人预期得到的选票数，
 * 以空格分开，每人的预期得票数在1到1000之间（包含1和1000）。
 * 
 * 经过小东的争取后，可能出现候选人得票数为0或超过1000的情况。
 * 
 * 输出 对每组测试数据，单独输出一行，内容为小东最少需要争取的选票数。
 * 
 * 样例输入
 * 5
 * 5 1 11 2 8
 * 
 * 4
 * 1 8 8 8
 * 
 * 2
 * 7 6
 * 样例输出
 * 4
 * 
 * 6
 * 
 * 0​
 * 
 * @author Administrator
 * 
 */
public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNext()) {
			int scandidate = scanner.nextInt();
			int[] a = new int[scandidate];
			for (int i = 0; i < scandidate; i++) {
				a[i] = scanner.nextInt();
			}
			getMinNotes(a);
		}
		scanner.close();
	}
    //获取需要拉票的最少票数
	public static void getMinNotes(int[] a) {
		int count = 0; // 最大数的数目
		if (a == null || a.length <= 0) {
			return;
		}
		while (true) {
			// 每次找出最大的数,然后该数减1，a[0]加1
			// 循环执行
			int maxNumber = a[0]; // 最大数
			int maxPosition = 0; // 记录最大数字的下标
			for (int i = 0; i < a.length - 1; i++) {
				if (a[i + 1] >= maxNumber) {
					maxNumber = a[i + 1];
					maxPosition = i + 1;
				}
			}
			/*
			 * 之前的想法是找出最大的数以及重复的数目 但是若1000,999,998这样就不行 for (int i = 0; i <
			 * a.length; i++) { if (a[i] == maxNumber) { maxcount++; } }
			 */
			// 注意，有可能是6，6这种情况，只要后面的数跟a0相等或者大，那么就算是后面的数大
			if (maxPosition == 0) {
				System.out.println(count);
				break;
			} else {
				count++;
				a[0] += 1;
				a[maxPosition] -= 1;
			}
		}
	}
}
